IBM DebugTool中巧用GOTO调试程序

最近接触IBM DebugTool比较多,再说一个在mainframe上面调试COBOL或者PL/I程序的技巧吧。
经常在用IBM DebugTool或者DTCN调试程序的时候,造测试数据很不容易。如果调试过程中发现这次数据没有造成功,我们没有必要每次都退出全部程序重新造数据,可以巧妙地利用“GOTO”语句,随心所欲地在程序里面跳转。
比如下面这一个程序段,在调试过程中我们可以在Call黑盒子程序BLACKBOX的前后都设置一个断点,即9178行以及9202行都设置一个断点,如果我们发现程序跑到了9202行但是返回码不是我们想要的结果,那么运行“GOTO 9178” 即可重新回到Call黑盒子之前,无限反复尝试,重新造数据,直到成功!

SOURCE: TESTPGM1 --1----+----2----+----3----+----4----+----5 LINE: 9178 OF 15895
0020  01 WS-FIELDS.
0021  05 WS-CALLED-PGM            PIC X(08) VALUE 'BLACKBOX'.
0022  05 WS-RETURN-CD             PIC X(04) VALUE SPACES.
0023  05 WS-RETURN-MSG            PIC X(20) VALUE SPACES.
  ...
9178 INITIALIZE COMMAREA1                        
9179 MOVE 4500.00     TO WAGE OF COMMAREA1
9180 MOVE TODAYS-DATE TO ENROLL-DATE OF COMMAREA1
9181 SET  WS-CALLED-PGM-PTR    TO ADDRESS  OF COMMAREA1
9182 CALL WS-CALLED-PGM        USING WS-CALLED-PGM-PTR  
9183 ON EXCEPTION                                         
9184   SET  CALLED-UNSUCCESSFUL   TO TRUE            
9185   MOVE 'ERR1'                TO RETURN-CD 
9186   MOVE 'CALL FAILED - EXCEPTION OCCURED'   
9187                              TO WS-RETURN-MSG
9188 PERFORM A9999-TERMINATION                           
9189         THRU A9999-EXIT   
9200 END-CALL                   
9201 
9202 IF RTN-CODE OF COMMAREA1 = '    '
  .
  .
  .

用这种“GOTO”的方法,同样也可以用来解决F2单步执行不小心按多了错过了代码但是还想退回去的情况,可以试试~

Comments !